package leetcode_双周赛._20210501;

import java.util.*;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/5/1 22:49
 * 座位预约管理系统
 * reverse 使座位不可做
 * unreserve 使作为可做
 * 使用两个列表存储
 * 一个列表用来存储可以使用的座位
 * 另一个列表用来存储不可使用的座位
 */
public class _5713 {
    class SeatManager {
        List<Integer> unuse, used;

        public SeatManager(int n) {
            unuse = new ArrayList<>();
            used = new ArrayList<>();
            for (int i = 1; i <= n; i++) unuse.add(i);
        }

        public int reserve() {
            int ans = -1;
            if (unuse.size() > 0) {
                ans = unuse.get(0);
                used.add(unuse.remove(0));
                Collections.sort(used);
            }
            return ans;
        }

        public void unreserve(int seatNumber) {
            int index = -1;
            for (int i = 0; i < used.size(); i++) {
                if (seatNumber == used.get(i)) index = i;
            }
            if (index != -1) {
                unuse.add(used.remove(index));
                Collections.sort(unuse);
            }
        }
    }
}
